/**
 */
package de.thwildau.tm.moses.asn1.asn1.provider;

import de.thwildau.tm.moses.asn1.asn1.util.Asn1AdapterFactory;

import java.util.ArrayList;
import java.util.Collection;

import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.Notifier;

import org.eclipse.emf.edit.provider.ChangeNotifier;
import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
import org.eclipse.emf.edit.provider.IChangeNotifier;
import org.eclipse.emf.edit.provider.IDisposable;
import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
import org.eclipse.emf.edit.provider.IItemLabelProvider;
import org.eclipse.emf.edit.provider.IItemPropertySource;
import org.eclipse.emf.edit.provider.INotifyChangedListener;
import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

/**
 * This is the factory that is used to provide the interfaces needed to support Viewers.
 * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
 * The adapters also support Eclipse property sheets.
 * Note that most of the adapters are shared among multiple instances.
 * <!-- begin-user-doc -->
 * <!-- end-user-doc -->
 * @generated
 */
public class Asn1ItemProviderAdapterFactory extends Asn1AdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable
{
  /**
   * This keeps track of the root adapter factory that delegates to this adapter factory.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ComposedAdapterFactory parentAdapterFactory;

  /**
   * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected IChangeNotifier changeNotifier = new ChangeNotifier();

  /**
   * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected Collection<Object> supportedTypes = new ArrayList<Object>();

  /**
   * This constructs an instance.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Asn1ItemProviderAdapterFactory()
  {
    supportedTypes.add(IEditingDomainItemProvider.class);
    supportedTypes.add(IStructuredItemContentProvider.class);
    supportedTypes.add(ITreeItemContentProvider.class);
    supportedTypes.add(IItemLabelProvider.class);
    supportedTypes.add(IItemPropertySource.class);
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.Asn1} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected Asn1ItemProvider asn1ItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.Asn1}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createAsn1Adapter()
  {
    if (asn1ItemProvider == null)
    {
      asn1ItemProvider = new Asn1ItemProvider(this);
    }

    return asn1ItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ModuleDefinition} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ModuleDefinitionItemProvider moduleDefinitionItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ModuleDefinition}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createModuleDefinitionAdapter()
  {
    if (moduleDefinitionItemProvider == null)
    {
      moduleDefinitionItemProvider = new ModuleDefinitionItemProvider(this);
    }

    return moduleDefinitionItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ModuleIdentifier} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ModuleIdentifierItemProvider moduleIdentifierItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ModuleIdentifier}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createModuleIdentifierAdapter()
  {
    if (moduleIdentifierItemProvider == null)
    {
      moduleIdentifierItemProvider = new ModuleIdentifierItemProvider(this);
    }

    return moduleIdentifierItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.EncodingReferenceDefault} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected EncodingReferenceDefaultItemProvider encodingReferenceDefaultItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.EncodingReferenceDefault}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createEncodingReferenceDefaultAdapter()
  {
    if (encodingReferenceDefaultItemProvider == null)
    {
      encodingReferenceDefaultItemProvider = new EncodingReferenceDefaultItemProvider(this);
    }

    return encodingReferenceDefaultItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ModuleBody} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ModuleBodyItemProvider moduleBodyItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ModuleBody}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createModuleBodyAdapter()
  {
    if (moduleBodyItemProvider == null)
    {
      moduleBodyItemProvider = new ModuleBodyItemProvider(this);
    }

    return moduleBodyItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.Exports} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ExportsItemProvider exportsItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.Exports}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createExportsAdapter()
  {
    if (exportsItemProvider == null)
    {
      exportsItemProvider = new ExportsItemProvider(this);
    }

    return exportsItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.Imports} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ImportsItemProvider importsItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.Imports}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createImportsAdapter()
  {
    if (importsItemProvider == null)
    {
      importsItemProvider = new ImportsItemProvider(this);
    }

    return importsItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.DefinedType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected DefinedTypeItemProvider definedTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.DefinedType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createDefinedTypeAdapter()
  {
    if (definedTypeItemProvider == null)
    {
      definedTypeItemProvider = new DefinedTypeItemProvider(this);
    }

    return definedTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.DefinedValue} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected DefinedValueItemProvider definedValueItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.DefinedValue}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createDefinedValueAdapter()
  {
    if (definedValueItemProvider == null)
    {
      definedValueItemProvider = new DefinedValueItemProvider(this);
    }

    return definedValueItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.Assignment} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected AssignmentItemProvider assignmentItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.Assignment}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createAssignmentAdapter()
  {
    if (assignmentItemProvider == null)
    {
      assignmentItemProvider = new AssignmentItemProvider(this);
    }

    return assignmentItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.TypeAssignment} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected TypeAssignmentItemProvider typeAssignmentItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.TypeAssignment}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createTypeAssignmentAdapter()
  {
    if (typeAssignmentItemProvider == null)
    {
      typeAssignmentItemProvider = new TypeAssignmentItemProvider(this);
    }

    return typeAssignmentItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ValueAssignment} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ValueAssignmentItemProvider valueAssignmentItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ValueAssignment}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createValueAssignmentAdapter()
  {
    if (valueAssignmentItemProvider == null)
    {
      valueAssignmentItemProvider = new ValueAssignmentItemProvider(this);
    }

    return valueAssignmentItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.SimpleValueAssignment} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected SimpleValueAssignmentItemProvider simpleValueAssignmentItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.SimpleValueAssignment}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createSimpleValueAssignmentAdapter()
  {
    if (simpleValueAssignmentItemProvider == null)
    {
      simpleValueAssignmentItemProvider = new SimpleValueAssignmentItemProvider(this);
    }

    return simpleValueAssignmentItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ChoiceValueAssignment} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ChoiceValueAssignmentItemProvider choiceValueAssignmentItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ChoiceValueAssignment}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createChoiceValueAssignmentAdapter()
  {
    if (choiceValueAssignmentItemProvider == null)
    {
      choiceValueAssignmentItemProvider = new ChoiceValueAssignmentItemProvider(this);
    }

    return choiceValueAssignmentItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ObjectIdentifierValueAssignment} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ObjectIdentifierValueAssignmentItemProvider objectIdentifierValueAssignmentItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ObjectIdentifierValueAssignment}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createObjectIdentifierValueAssignmentAdapter()
  {
    if (objectIdentifierValueAssignmentItemProvider == null)
    {
      objectIdentifierValueAssignmentItemProvider = new ObjectIdentifierValueAssignmentItemProvider(this);
    }

    return objectIdentifierValueAssignmentItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.SequenceValueAssignment} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected SequenceValueAssignmentItemProvider sequenceValueAssignmentItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.SequenceValueAssignment}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createSequenceValueAssignmentAdapter()
  {
    if (sequenceValueAssignmentItemProvider == null)
    {
      sequenceValueAssignmentItemProvider = new SequenceValueAssignmentItemProvider(this);
    }

    return sequenceValueAssignmentItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.Type} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected TypeItemProvider typeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.Type}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createTypeAdapter()
  {
    if (typeItemProvider == null)
    {
      typeItemProvider = new TypeItemProvider(this);
    }

    return typeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.BuiltinType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected BuiltinTypeItemProvider builtinTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.BuiltinType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createBuiltinTypeAdapter()
  {
    if (builtinTypeItemProvider == null)
    {
      builtinTypeItemProvider = new BuiltinTypeItemProvider(this);
    }

    return builtinTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.SimpleType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected SimpleTypeItemProvider simpleTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.SimpleType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createSimpleTypeAdapter()
  {
    if (simpleTypeItemProvider == null)
    {
      simpleTypeItemProvider = new SimpleTypeItemProvider(this);
    }

    return simpleTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ContainerType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ContainerTypeItemProvider containerTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ContainerType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createContainerTypeAdapter()
  {
    if (containerTypeItemProvider == null)
    {
      containerTypeItemProvider = new ContainerTypeItemProvider(this);
    }

    return containerTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ReferencedType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ReferencedTypeItemProvider referencedTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ReferencedType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createReferencedTypeAdapter()
  {
    if (referencedTypeItemProvider == null)
    {
      referencedTypeItemProvider = new ReferencedTypeItemProvider(this);
    }

    return referencedTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.NamedType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected NamedTypeItemProvider namedTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.NamedType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createNamedTypeAdapter()
  {
    if (namedTypeItemProvider == null)
    {
      namedTypeItemProvider = new NamedTypeItemProvider(this);
    }

    return namedTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.Value} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ValueItemProvider valueItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.Value}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createValueAdapter()
  {
    if (valueItemProvider == null)
    {
      valueItemProvider = new ValueItemProvider(this);
    }

    return valueItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.BuiltinValue} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected BuiltinValueItemProvider builtinValueItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.BuiltinValue}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createBuiltinValueAdapter()
  {
    if (builtinValueItemProvider == null)
    {
      builtinValueItemProvider = new BuiltinValueItemProvider(this);
    }

    return builtinValueItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.SimpleValue} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected SimpleValueItemProvider simpleValueItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.SimpleValue}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createSimpleValueAdapter()
  {
    if (simpleValueItemProvider == null)
    {
      simpleValueItemProvider = new SimpleValueItemProvider(this);
    }

    return simpleValueItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ContainerValue} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ContainerValueItemProvider containerValueItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ContainerValue}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createContainerValueAdapter()
  {
    if (containerValueItemProvider == null)
    {
      containerValueItemProvider = new ContainerValueItemProvider(this);
    }

    return containerValueItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ReferencedValue} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ReferencedValueItemProvider referencedValueItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ReferencedValue}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createReferencedValueAdapter()
  {
    if (referencedValueItemProvider == null)
    {
      referencedValueItemProvider = new ReferencedValueItemProvider(this);
    }

    return referencedValueItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.NamedValue} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected NamedValueItemProvider namedValueItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.NamedValue}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createNamedValueAdapter()
  {
    if (namedValueItemProvider == null)
    {
      namedValueItemProvider = new NamedValueItemProvider(this);
    }

    return namedValueItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.BooleanType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected BooleanTypeItemProvider booleanTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.BooleanType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createBooleanTypeAdapter()
  {
    if (booleanTypeItemProvider == null)
    {
      booleanTypeItemProvider = new BooleanTypeItemProvider(this);
    }

    return booleanTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.BooleanValue} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected BooleanValueItemProvider booleanValueItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.BooleanValue}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createBooleanValueAdapter()
  {
    if (booleanValueItemProvider == null)
    {
      booleanValueItemProvider = new BooleanValueItemProvider(this);
    }

    return booleanValueItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.IntegerType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected IntegerTypeItemProvider integerTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.IntegerType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createIntegerTypeAdapter()
  {
    if (integerTypeItemProvider == null)
    {
      integerTypeItemProvider = new IntegerTypeItemProvider(this);
    }

    return integerTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.NamedNumber} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected NamedNumberItemProvider namedNumberItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.NamedNumber}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createNamedNumberAdapter()
  {
    if (namedNumberItemProvider == null)
    {
      namedNumberItemProvider = new NamedNumberItemProvider(this);
    }

    return namedNumberItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.IntegerValue} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected IntegerValueItemProvider integerValueItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.IntegerValue}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createIntegerValueAdapter()
  {
    if (integerValueItemProvider == null)
    {
      integerValueItemProvider = new IntegerValueItemProvider(this);
    }

    return integerValueItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.EnumeratedType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected EnumeratedTypeItemProvider enumeratedTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.EnumeratedType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createEnumeratedTypeAdapter()
  {
    if (enumeratedTypeItemProvider == null)
    {
      enumeratedTypeItemProvider = new EnumeratedTypeItemProvider(this);
    }

    return enumeratedTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.EnumerationItem} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected EnumerationItemItemProvider enumerationItemItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.EnumerationItem}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createEnumerationItemAdapter()
  {
    if (enumerationItemItemProvider == null)
    {
      enumerationItemItemProvider = new EnumerationItemItemProvider(this);
    }

    return enumerationItemItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.RealType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected RealTypeItemProvider realTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.RealType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createRealTypeAdapter()
  {
    if (realTypeItemProvider == null)
    {
      realTypeItemProvider = new RealTypeItemProvider(this);
    }

    return realTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.RealValue} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected RealValueItemProvider realValueItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.RealValue}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createRealValueAdapter()
  {
    if (realValueItemProvider == null)
    {
      realValueItemProvider = new RealValueItemProvider(this);
    }

    return realValueItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.NumericRealValue} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected NumericRealValueItemProvider numericRealValueItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.NumericRealValue}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createNumericRealValueAdapter()
  {
    if (numericRealValueItemProvider == null)
    {
      numericRealValueItemProvider = new NumericRealValueItemProvider(this);
    }

    return numericRealValueItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.RealSequenceValue} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected RealSequenceValueItemProvider realSequenceValueItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.RealSequenceValue}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createRealSequenceValueAdapter()
  {
    if (realSequenceValueItemProvider == null)
    {
      realSequenceValueItemProvider = new RealSequenceValueItemProvider(this);
    }

    return realSequenceValueItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.SpecialRealValue} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected SpecialRealValueItemProvider specialRealValueItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.SpecialRealValue}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createSpecialRealValueAdapter()
  {
    if (specialRealValueItemProvider == null)
    {
      specialRealValueItemProvider = new SpecialRealValueItemProvider(this);
    }

    return specialRealValueItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.BitStringType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected BitStringTypeItemProvider bitStringTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.BitStringType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createBitStringTypeAdapter()
  {
    if (bitStringTypeItemProvider == null)
    {
      bitStringTypeItemProvider = new BitStringTypeItemProvider(this);
    }

    return bitStringTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.NamedBit} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected NamedBitItemProvider namedBitItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.NamedBit}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createNamedBitAdapter()
  {
    if (namedBitItemProvider == null)
    {
      namedBitItemProvider = new NamedBitItemProvider(this);
    }

    return namedBitItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.BitStringValue} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected BitStringValueItemProvider bitStringValueItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.BitStringValue}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createBitStringValueAdapter()
  {
    if (bitStringValueItemProvider == null)
    {
      bitStringValueItemProvider = new BitStringValueItemProvider(this);
    }

    return bitStringValueItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.OctetStringType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected OctetStringTypeItemProvider octetStringTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.OctetStringType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createOctetStringTypeAdapter()
  {
    if (octetStringTypeItemProvider == null)
    {
      octetStringTypeItemProvider = new OctetStringTypeItemProvider(this);
    }

    return octetStringTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.OctetStringValue} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected OctetStringValueItemProvider octetStringValueItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.OctetStringValue}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createOctetStringValueAdapter()
  {
    if (octetStringValueItemProvider == null)
    {
      octetStringValueItemProvider = new OctetStringValueItemProvider(this);
    }

    return octetStringValueItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.NullType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected NullTypeItemProvider nullTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.NullType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createNullTypeAdapter()
  {
    if (nullTypeItemProvider == null)
    {
      nullTypeItemProvider = new NullTypeItemProvider(this);
    }

    return nullTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.NullValue} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected NullValueItemProvider nullValueItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.NullValue}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createNullValueAdapter()
  {
    if (nullValueItemProvider == null)
    {
      nullValueItemProvider = new NullValueItemProvider(this);
    }

    return nullValueItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.SequenceType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected SequenceTypeItemProvider sequenceTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.SequenceType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createSequenceTypeAdapter()
  {
    if (sequenceTypeItemProvider == null)
    {
      sequenceTypeItemProvider = new SequenceTypeItemProvider(this);
    }

    return sequenceTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ExtensionAndException} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ExtensionAndExceptionItemProvider extensionAndExceptionItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ExtensionAndException}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createExtensionAndExceptionAdapter()
  {
    if (extensionAndExceptionItemProvider == null)
    {
      extensionAndExceptionItemProvider = new ExtensionAndExceptionItemProvider(this);
    }

    return extensionAndExceptionItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ExtensionAdditions} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ExtensionAdditionsItemProvider extensionAdditionsItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ExtensionAdditions}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createExtensionAdditionsAdapter()
  {
    if (extensionAdditionsItemProvider == null)
    {
      extensionAdditionsItemProvider = new ExtensionAdditionsItemProvider(this);
    }

    return extensionAdditionsItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ComponentTypeList} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ComponentTypeListItemProvider componentTypeListItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ComponentTypeList}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createComponentTypeListAdapter()
  {
    if (componentTypeListItemProvider == null)
    {
      componentTypeListItemProvider = new ComponentTypeListItemProvider(this);
    }

    return componentTypeListItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.VersionNumber} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected VersionNumberItemProvider versionNumberItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.VersionNumber}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createVersionNumberAdapter()
  {
    if (versionNumberItemProvider == null)
    {
      versionNumberItemProvider = new VersionNumberItemProvider(this);
    }

    return versionNumberItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ExtensionAddition} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ExtensionAdditionItemProvider extensionAdditionItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ExtensionAddition}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createExtensionAdditionAdapter()
  {
    if (extensionAdditionItemProvider == null)
    {
      extensionAdditionItemProvider = new ExtensionAdditionItemProvider(this);
    }

    return extensionAdditionItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ExtensionAdditionGroup} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ExtensionAdditionGroupItemProvider extensionAdditionGroupItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ExtensionAdditionGroup}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createExtensionAdditionGroupAdapter()
  {
    if (extensionAdditionGroupItemProvider == null)
    {
      extensionAdditionGroupItemProvider = new ExtensionAdditionGroupItemProvider(this);
    }

    return extensionAdditionGroupItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ComponentType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ComponentTypeItemProvider componentTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ComponentType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createComponentTypeAdapter()
  {
    if (componentTypeItemProvider == null)
    {
      componentTypeItemProvider = new ComponentTypeItemProvider(this);
    }

    return componentTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.NamedComponentType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected NamedComponentTypeItemProvider namedComponentTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.NamedComponentType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createNamedComponentTypeAdapter()
  {
    if (namedComponentTypeItemProvider == null)
    {
      namedComponentTypeItemProvider = new NamedComponentTypeItemProvider(this);
    }

    return namedComponentTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ComponentOfType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ComponentOfTypeItemProvider componentOfTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ComponentOfType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createComponentOfTypeAdapter()
  {
    if (componentOfTypeItemProvider == null)
    {
      componentOfTypeItemProvider = new ComponentOfTypeItemProvider(this);
    }

    return componentOfTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.AnyDefinedNamedType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected AnyDefinedNamedTypeItemProvider anyDefinedNamedTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.AnyDefinedNamedType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createAnyDefinedNamedTypeAdapter()
  {
    if (anyDefinedNamedTypeItemProvider == null)
    {
      anyDefinedNamedTypeItemProvider = new AnyDefinedNamedTypeItemProvider(this);
    }

    return anyDefinedNamedTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.SequenceValue} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected SequenceValueItemProvider sequenceValueItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.SequenceValue}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createSequenceValueAdapter()
  {
    if (sequenceValueItemProvider == null)
    {
      sequenceValueItemProvider = new SequenceValueItemProvider(this);
    }

    return sequenceValueItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ComponentValueList} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ComponentValueListItemProvider componentValueListItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ComponentValueList}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createComponentValueListAdapter()
  {
    if (componentValueListItemProvider == null)
    {
      componentValueListItemProvider = new ComponentValueListItemProvider(this);
    }

    return componentValueListItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.SequenceOfType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected SequenceOfTypeItemProvider sequenceOfTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.SequenceOfType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createSequenceOfTypeAdapter()
  {
    if (sequenceOfTypeItemProvider == null)
    {
      sequenceOfTypeItemProvider = new SequenceOfTypeItemProvider(this);
    }

    return sequenceOfTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.SetType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected SetTypeItemProvider setTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.SetType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createSetTypeAdapter()
  {
    if (setTypeItemProvider == null)
    {
      setTypeItemProvider = new SetTypeItemProvider(this);
    }

    return setTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.SetOfType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected SetOfTypeItemProvider setOfTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.SetOfType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createSetOfTypeAdapter()
  {
    if (setOfTypeItemProvider == null)
    {
      setOfTypeItemProvider = new SetOfTypeItemProvider(this);
    }

    return setOfTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ChoiceType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ChoiceTypeItemProvider choiceTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ChoiceType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createChoiceTypeAdapter()
  {
    if (choiceTypeItemProvider == null)
    {
      choiceTypeItemProvider = new ChoiceTypeItemProvider(this);
    }

    return choiceTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.AlternativeTypeList} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected AlternativeTypeListItemProvider alternativeTypeListItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.AlternativeTypeList}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createAlternativeTypeListAdapter()
  {
    if (alternativeTypeListItemProvider == null)
    {
      alternativeTypeListItemProvider = new AlternativeTypeListItemProvider(this);
    }

    return alternativeTypeListItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ExtensionAdditionAlternativesGroup} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ExtensionAdditionAlternativesGroupItemProvider extensionAdditionAlternativesGroupItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ExtensionAdditionAlternativesGroup}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createExtensionAdditionAlternativesGroupAdapter()
  {
    if (extensionAdditionAlternativesGroupItemProvider == null)
    {
      extensionAdditionAlternativesGroupItemProvider = new ExtensionAdditionAlternativesGroupItemProvider(this);
    }

    return extensionAdditionAlternativesGroupItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ExtensionAdditionAlternative} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ExtensionAdditionAlternativeItemProvider extensionAdditionAlternativeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ExtensionAdditionAlternative}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createExtensionAdditionAlternativeAdapter()
  {
    if (extensionAdditionAlternativeItemProvider == null)
    {
      extensionAdditionAlternativeItemProvider = new ExtensionAdditionAlternativeItemProvider(this);
    }

    return extensionAdditionAlternativeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ExtensionAdditionAlternativesList} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ExtensionAdditionAlternativesListItemProvider extensionAdditionAlternativesListItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ExtensionAdditionAlternativesList}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createExtensionAdditionAlternativesListAdapter()
  {
    if (extensionAdditionAlternativesListItemProvider == null)
    {
      extensionAdditionAlternativesListItemProvider = new ExtensionAdditionAlternativesListItemProvider(this);
    }

    return extensionAdditionAlternativesListItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ChoiceValue} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ChoiceValueItemProvider choiceValueItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ChoiceValue}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createChoiceValueAdapter()
  {
    if (choiceValueItemProvider == null)
    {
      choiceValueItemProvider = new ChoiceValueItemProvider(this);
    }

    return choiceValueItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.PrefixedType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected PrefixedTypeItemProvider prefixedTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.PrefixedType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createPrefixedTypeAdapter()
  {
    if (prefixedTypeItemProvider == null)
    {
      prefixedTypeItemProvider = new PrefixedTypeItemProvider(this);
    }

    return prefixedTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.TaggedType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected TaggedTypeItemProvider taggedTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.TaggedType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createTaggedTypeAdapter()
  {
    if (taggedTypeItemProvider == null)
    {
      taggedTypeItemProvider = new TaggedTypeItemProvider(this);
    }

    return taggedTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.Tag} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected TagItemProvider tagItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.Tag}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createTagAdapter()
  {
    if (tagItemProvider == null)
    {
      tagItemProvider = new TagItemProvider(this);
    }

    return tagItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ClassNumber} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ClassNumberItemProvider classNumberItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ClassNumber}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createClassNumberAdapter()
  {
    if (classNumberItemProvider == null)
    {
      classNumberItemProvider = new ClassNumberItemProvider(this);
    }

    return classNumberItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ObjectIdentifierType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ObjectIdentifierTypeItemProvider objectIdentifierTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ObjectIdentifierType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createObjectIdentifierTypeAdapter()
  {
    if (objectIdentifierTypeItemProvider == null)
    {
      objectIdentifierTypeItemProvider = new ObjectIdentifierTypeItemProvider(this);
    }

    return objectIdentifierTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ObjectIdentifierValue} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ObjectIdentifierValueItemProvider objectIdentifierValueItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ObjectIdentifierValue}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createObjectIdentifierValueAdapter()
  {
    if (objectIdentifierValueItemProvider == null)
    {
      objectIdentifierValueItemProvider = new ObjectIdentifierValueItemProvider(this);
    }

    return objectIdentifierValueItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ObjIdComponents} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ObjIdComponentsItemProvider objIdComponentsItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ObjIdComponents}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createObjIdComponentsAdapter()
  {
    if (objIdComponentsItemProvider == null)
    {
      objIdComponentsItemProvider = new ObjIdComponentsItemProvider(this);
    }

    return objIdComponentsItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.TimeType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected TimeTypeItemProvider timeTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.TimeType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createTimeTypeAdapter()
  {
    if (timeTypeItemProvider == null)
    {
      timeTypeItemProvider = new TimeTypeItemProvider(this);
    }

    return timeTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.DateType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected DateTypeItemProvider dateTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.DateType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createDateTypeAdapter()
  {
    if (dateTypeItemProvider == null)
    {
      dateTypeItemProvider = new DateTypeItemProvider(this);
    }

    return dateTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.TimeOfDayType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected TimeOfDayTypeItemProvider timeOfDayTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.TimeOfDayType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createTimeOfDayTypeAdapter()
  {
    if (timeOfDayTypeItemProvider == null)
    {
      timeOfDayTypeItemProvider = new TimeOfDayTypeItemProvider(this);
    }

    return timeOfDayTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.DateTimeType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected DateTimeTypeItemProvider dateTimeTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.DateTimeType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createDateTimeTypeAdapter()
  {
    if (dateTimeTypeItemProvider == null)
    {
      dateTimeTypeItemProvider = new DateTimeTypeItemProvider(this);
    }

    return dateTimeTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.DurationType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected DurationTypeItemProvider durationTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.DurationType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createDurationTypeAdapter()
  {
    if (durationTypeItemProvider == null)
    {
      durationTypeItemProvider = new DurationTypeItemProvider(this);
    }

    return durationTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.CharacterStringType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected CharacterStringTypeItemProvider characterStringTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.CharacterStringType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createCharacterStringTypeAdapter()
  {
    if (characterStringTypeItemProvider == null)
    {
      characterStringTypeItemProvider = new CharacterStringTypeItemProvider(this);
    }

    return characterStringTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.CharacterStringValue} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected CharacterStringValueItemProvider characterStringValueItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.CharacterStringValue}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createCharacterStringValueAdapter()
  {
    if (characterStringValueItemProvider == null)
    {
      characterStringValueItemProvider = new CharacterStringValueItemProvider(this);
    }

    return characterStringValueItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.RestrictedCharacterStringType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected RestrictedCharacterStringTypeItemProvider restrictedCharacterStringTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.RestrictedCharacterStringType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createRestrictedCharacterStringTypeAdapter()
  {
    if (restrictedCharacterStringTypeItemProvider == null)
    {
      restrictedCharacterStringTypeItemProvider = new RestrictedCharacterStringTypeItemProvider(this);
    }

    return restrictedCharacterStringTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.BMPString} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected BMPStringItemProvider bmpStringItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.BMPString}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createBMPStringAdapter()
  {
    if (bmpStringItemProvider == null)
    {
      bmpStringItemProvider = new BMPStringItemProvider(this);
    }

    return bmpStringItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.GeneralString} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected GeneralStringItemProvider generalStringItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.GeneralString}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createGeneralStringAdapter()
  {
    if (generalStringItemProvider == null)
    {
      generalStringItemProvider = new GeneralStringItemProvider(this);
    }

    return generalStringItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.GraphicString} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected GraphicStringItemProvider graphicStringItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.GraphicString}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createGraphicStringAdapter()
  {
    if (graphicStringItemProvider == null)
    {
      graphicStringItemProvider = new GraphicStringItemProvider(this);
    }

    return graphicStringItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.IA5String} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected IA5StringItemProvider ia5StringItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.IA5String}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createIA5StringAdapter()
  {
    if (ia5StringItemProvider == null)
    {
      ia5StringItemProvider = new IA5StringItemProvider(this);
    }

    return ia5StringItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ISO646String} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ISO646StringItemProvider iso646StringItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ISO646String}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createISO646StringAdapter()
  {
    if (iso646StringItemProvider == null)
    {
      iso646StringItemProvider = new ISO646StringItemProvider(this);
    }

    return iso646StringItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.NumericString} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected NumericStringItemProvider numericStringItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.NumericString}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createNumericStringAdapter()
  {
    if (numericStringItemProvider == null)
    {
      numericStringItemProvider = new NumericStringItemProvider(this);
    }

    return numericStringItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.PrintableString} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected PrintableStringItemProvider printableStringItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.PrintableString}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createPrintableStringAdapter()
  {
    if (printableStringItemProvider == null)
    {
      printableStringItemProvider = new PrintableStringItemProvider(this);
    }

    return printableStringItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.TeletexString} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected TeletexStringItemProvider teletexStringItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.TeletexString}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createTeletexStringAdapter()
  {
    if (teletexStringItemProvider == null)
    {
      teletexStringItemProvider = new TeletexStringItemProvider(this);
    }

    return teletexStringItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.T61String} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected T61StringItemProvider t61StringItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.T61String}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createT61StringAdapter()
  {
    if (t61StringItemProvider == null)
    {
      t61StringItemProvider = new T61StringItemProvider(this);
    }

    return t61StringItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.UniversalString} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected UniversalStringItemProvider universalStringItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.UniversalString}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createUniversalStringAdapter()
  {
    if (universalStringItemProvider == null)
    {
      universalStringItemProvider = new UniversalStringItemProvider(this);
    }

    return universalStringItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.UTF8String} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected UTF8StringItemProvider utf8StringItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.UTF8String}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createUTF8StringAdapter()
  {
    if (utf8StringItemProvider == null)
    {
      utf8StringItemProvider = new UTF8StringItemProvider(this);
    }

    return utf8StringItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.VideotexString} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected VideotexStringItemProvider videotexStringItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.VideotexString}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createVideotexStringAdapter()
  {
    if (videotexStringItemProvider == null)
    {
      videotexStringItemProvider = new VideotexStringItemProvider(this);
    }

    return videotexStringItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.VisibleString} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected VisibleStringItemProvider visibleStringItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.VisibleString}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createVisibleStringAdapter()
  {
    if (visibleStringItemProvider == null)
    {
      visibleStringItemProvider = new VisibleStringItemProvider(this);
    }

    return visibleStringItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.RestrictedCharacterStringValue} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected RestrictedCharacterStringValueItemProvider restrictedCharacterStringValueItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.RestrictedCharacterStringValue}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createRestrictedCharacterStringValueAdapter()
  {
    if (restrictedCharacterStringValueItemProvider == null)
    {
      restrictedCharacterStringValueItemProvider = new RestrictedCharacterStringValueItemProvider(this);
    }

    return restrictedCharacterStringValueItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.UnrestrictedCharacterStringType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected UnrestrictedCharacterStringTypeItemProvider unrestrictedCharacterStringTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.UnrestrictedCharacterStringType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createUnrestrictedCharacterStringTypeAdapter()
  {
    if (unrestrictedCharacterStringTypeItemProvider == null)
    {
      unrestrictedCharacterStringTypeItemProvider = new UnrestrictedCharacterStringTypeItemProvider(this);
    }

    return unrestrictedCharacterStringTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.UsefulType} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected UsefulTypeItemProvider usefulTypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.UsefulType}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createUsefulTypeAdapter()
  {
    if (usefulTypeItemProvider == null)
    {
      usefulTypeItemProvider = new UsefulTypeItemProvider(this);
    }

    return usefulTypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.Constraint} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ConstraintItemProvider constraintItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.Constraint}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createConstraintAdapter()
  {
    if (constraintItemProvider == null)
    {
      constraintItemProvider = new ConstraintItemProvider(this);
    }

    return constraintItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ConstraintSpec} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ConstraintSpecItemProvider constraintSpecItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ConstraintSpec}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createConstraintSpecAdapter()
  {
    if (constraintSpecItemProvider == null)
    {
      constraintSpecItemProvider = new ConstraintSpecItemProvider(this);
    }

    return constraintSpecItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.SubtypeConstraint} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected SubtypeConstraintItemProvider subtypeConstraintItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.SubtypeConstraint}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createSubtypeConstraintAdapter()
  {
    if (subtypeConstraintItemProvider == null)
    {
      subtypeConstraintItemProvider = new SubtypeConstraintItemProvider(this);
    }

    return subtypeConstraintItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ElementSetSpecs} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ElementSetSpecsItemProvider elementSetSpecsItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ElementSetSpecs}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createElementSetSpecsAdapter()
  {
    if (elementSetSpecsItemProvider == null)
    {
      elementSetSpecsItemProvider = new ElementSetSpecsItemProvider(this);
    }

    return elementSetSpecsItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ElementSetSpec} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ElementSetSpecItemProvider elementSetSpecItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ElementSetSpec}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createElementSetSpecAdapter()
  {
    if (elementSetSpecItemProvider == null)
    {
      elementSetSpecItemProvider = new ElementSetSpecItemProvider(this);
    }

    return elementSetSpecItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.Unions} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected UnionsItemProvider unionsItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.Unions}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createUnionsAdapter()
  {
    if (unionsItemProvider == null)
    {
      unionsItemProvider = new UnionsItemProvider(this);
    }

    return unionsItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.Intersections} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected IntersectionsItemProvider intersectionsItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.Intersections}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createIntersectionsAdapter()
  {
    if (intersectionsItemProvider == null)
    {
      intersectionsItemProvider = new IntersectionsItemProvider(this);
    }

    return intersectionsItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.IntersectionElements} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected IntersectionElementsItemProvider intersectionElementsItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.IntersectionElements}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createIntersectionElementsAdapter()
  {
    if (intersectionElementsItemProvider == null)
    {
      intersectionElementsItemProvider = new IntersectionElementsItemProvider(this);
    }

    return intersectionElementsItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.Exclusions} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ExclusionsItemProvider exclusionsItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.Exclusions}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createExclusionsAdapter()
  {
    if (exclusionsItemProvider == null)
    {
      exclusionsItemProvider = new ExclusionsItemProvider(this);
    }

    return exclusionsItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.Elements} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ElementsItemProvider elementsItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.Elements}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createElementsAdapter()
  {
    if (elementsItemProvider == null)
    {
      elementsItemProvider = new ElementsItemProvider(this);
    }

    return elementsItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.SubtypeElements} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected SubtypeElementsItemProvider subtypeElementsItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.SubtypeElements}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createSubtypeElementsAdapter()
  {
    if (subtypeElementsItemProvider == null)
    {
      subtypeElementsItemProvider = new SubtypeElementsItemProvider(this);
    }

    return subtypeElementsItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.SingleValue} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected SingleValueItemProvider singleValueItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.SingleValue}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createSingleValueAdapter()
  {
    if (singleValueItemProvider == null)
    {
      singleValueItemProvider = new SingleValueItemProvider(this);
    }

    return singleValueItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ContainedSubtype} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ContainedSubtypeItemProvider containedSubtypeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ContainedSubtype}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createContainedSubtypeAdapter()
  {
    if (containedSubtypeItemProvider == null)
    {
      containedSubtypeItemProvider = new ContainedSubtypeItemProvider(this);
    }

    return containedSubtypeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ValueRange} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ValueRangeItemProvider valueRangeItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ValueRange}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createValueRangeAdapter()
  {
    if (valueRangeItemProvider == null)
    {
      valueRangeItemProvider = new ValueRangeItemProvider(this);
    }

    return valueRangeItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.LowerEndpoint} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected LowerEndpointItemProvider lowerEndpointItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.LowerEndpoint}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createLowerEndpointAdapter()
  {
    if (lowerEndpointItemProvider == null)
    {
      lowerEndpointItemProvider = new LowerEndpointItemProvider(this);
    }

    return lowerEndpointItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.UpperEndpoint} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected UpperEndpointItemProvider upperEndpointItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.UpperEndpoint}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createUpperEndpointAdapter()
  {
    if (upperEndpointItemProvider == null)
    {
      upperEndpointItemProvider = new UpperEndpointItemProvider(this);
    }

    return upperEndpointItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.LowerEndValue} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected LowerEndValueItemProvider lowerEndValueItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.LowerEndValue}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createLowerEndValueAdapter()
  {
    if (lowerEndValueItemProvider == null)
    {
      lowerEndValueItemProvider = new LowerEndValueItemProvider(this);
    }

    return lowerEndValueItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.UpperEndValue} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected UpperEndValueItemProvider upperEndValueItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.UpperEndValue}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createUpperEndValueAdapter()
  {
    if (upperEndValueItemProvider == null)
    {
      upperEndValueItemProvider = new UpperEndValueItemProvider(this);
    }

    return upperEndValueItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.SizeConstraint} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected SizeConstraintItemProvider sizeConstraintItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.SizeConstraint}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createSizeConstraintAdapter()
  {
    if (sizeConstraintItemProvider == null)
    {
      sizeConstraintItemProvider = new SizeConstraintItemProvider(this);
    }

    return sizeConstraintItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.TypeConstraint} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected TypeConstraintItemProvider typeConstraintItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.TypeConstraint}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createTypeConstraintAdapter()
  {
    if (typeConstraintItemProvider == null)
    {
      typeConstraintItemProvider = new TypeConstraintItemProvider(this);
    }

    return typeConstraintItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.PermittedAlphabet} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected PermittedAlphabetItemProvider permittedAlphabetItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.PermittedAlphabet}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createPermittedAlphabetAdapter()
  {
    if (permittedAlphabetItemProvider == null)
    {
      permittedAlphabetItemProvider = new PermittedAlphabetItemProvider(this);
    }

    return permittedAlphabetItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ValueRangeValue} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ValueRangeValueItemProvider valueRangeValueItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ValueRangeValue}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createValueRangeValueAdapter()
  {
    if (valueRangeValueItemProvider == null)
    {
      valueRangeValueItemProvider = new ValueRangeValueItemProvider(this);
    }

    return valueRangeValueItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ExceptionSpec} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ExceptionSpecItemProvider exceptionSpecItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ExceptionSpec}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createExceptionSpecAdapter()
  {
    if (exceptionSpecItemProvider == null)
    {
      exceptionSpecItemProvider = new ExceptionSpecItemProvider(this);
    }

    return exceptionSpecItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.ExceptionIdentification} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected ExceptionIdentificationItemProvider exceptionIdentificationItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.ExceptionIdentification}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createExceptionIdentificationAdapter()
  {
    if (exceptionIdentificationItemProvider == null)
    {
      exceptionIdentificationItemProvider = new ExceptionIdentificationItemProvider(this);
    }

    return exceptionIdentificationItemProvider;
  }

  /**
   * This keeps track of the one adapter used for all {@link de.thwildau.tm.moses.asn1.asn1.CString} instances.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected CStringItemProvider cStringItemProvider;

  /**
   * This creates an adapter for a {@link de.thwildau.tm.moses.asn1.asn1.CString}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter createCStringAdapter()
  {
    if (cStringItemProvider == null)
    {
      cStringItemProvider = new CStringItemProvider(this);
    }

    return cStringItemProvider;
  }

  /**
   * This returns the root adapter factory that contains this factory.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public ComposeableAdapterFactory getRootAdapterFactory()
  {
    return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
  }

  /**
   * This sets the composed adapter factory that contains this factory.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory)
  {
    this.parentAdapterFactory = parentAdapterFactory;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public boolean isFactoryForType(Object type)
  {
    return supportedTypes.contains(type) || super.isFactoryForType(type);
  }

  /**
   * This implementation substitutes the factory itself as the key for the adapter.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Adapter adapt(Notifier notifier, Object type)
  {
    return super.adapt(notifier, this);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Object adapt(Object object, Object type)
  {
    if (isFactoryForType(type))
    {
      Object adapter = super.adapt(object, type);
      if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter)))
      {
        return adapter;
      }
    }

    return null;
  }

  /**
   * This adds a listener.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void addListener(INotifyChangedListener notifyChangedListener)
  {
    changeNotifier.addListener(notifyChangedListener);
  }

  /**
   * This removes a listener.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void removeListener(INotifyChangedListener notifyChangedListener)
  {
    changeNotifier.removeListener(notifyChangedListener);
  }

  /**
   * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void fireNotifyChanged(Notification notification)
  {
    changeNotifier.fireNotifyChanged(notification);

    if (parentAdapterFactory != null)
    {
      parentAdapterFactory.fireNotifyChanged(notification);
    }
  }

  /**
   * This disposes all of the item providers created by this factory. 
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void dispose()
  {
    if (asn1ItemProvider != null) asn1ItemProvider.dispose();
    if (moduleDefinitionItemProvider != null) moduleDefinitionItemProvider.dispose();
    if (moduleIdentifierItemProvider != null) moduleIdentifierItemProvider.dispose();
    if (encodingReferenceDefaultItemProvider != null) encodingReferenceDefaultItemProvider.dispose();
    if (moduleBodyItemProvider != null) moduleBodyItemProvider.dispose();
    if (exportsItemProvider != null) exportsItemProvider.dispose();
    if (importsItemProvider != null) importsItemProvider.dispose();
    if (definedTypeItemProvider != null) definedTypeItemProvider.dispose();
    if (definedValueItemProvider != null) definedValueItemProvider.dispose();
    if (assignmentItemProvider != null) assignmentItemProvider.dispose();
    if (typeAssignmentItemProvider != null) typeAssignmentItemProvider.dispose();
    if (valueAssignmentItemProvider != null) valueAssignmentItemProvider.dispose();
    if (simpleValueAssignmentItemProvider != null) simpleValueAssignmentItemProvider.dispose();
    if (choiceValueAssignmentItemProvider != null) choiceValueAssignmentItemProvider.dispose();
    if (objectIdentifierValueAssignmentItemProvider != null) objectIdentifierValueAssignmentItemProvider.dispose();
    if (sequenceValueAssignmentItemProvider != null) sequenceValueAssignmentItemProvider.dispose();
    if (typeItemProvider != null) typeItemProvider.dispose();
    if (builtinTypeItemProvider != null) builtinTypeItemProvider.dispose();
    if (simpleTypeItemProvider != null) simpleTypeItemProvider.dispose();
    if (containerTypeItemProvider != null) containerTypeItemProvider.dispose();
    if (referencedTypeItemProvider != null) referencedTypeItemProvider.dispose();
    if (namedTypeItemProvider != null) namedTypeItemProvider.dispose();
    if (valueItemProvider != null) valueItemProvider.dispose();
    if (builtinValueItemProvider != null) builtinValueItemProvider.dispose();
    if (simpleValueItemProvider != null) simpleValueItemProvider.dispose();
    if (containerValueItemProvider != null) containerValueItemProvider.dispose();
    if (referencedValueItemProvider != null) referencedValueItemProvider.dispose();
    if (namedValueItemProvider != null) namedValueItemProvider.dispose();
    if (booleanTypeItemProvider != null) booleanTypeItemProvider.dispose();
    if (booleanValueItemProvider != null) booleanValueItemProvider.dispose();
    if (integerTypeItemProvider != null) integerTypeItemProvider.dispose();
    if (namedNumberItemProvider != null) namedNumberItemProvider.dispose();
    if (integerValueItemProvider != null) integerValueItemProvider.dispose();
    if (enumeratedTypeItemProvider != null) enumeratedTypeItemProvider.dispose();
    if (enumerationItemItemProvider != null) enumerationItemItemProvider.dispose();
    if (realTypeItemProvider != null) realTypeItemProvider.dispose();
    if (realValueItemProvider != null) realValueItemProvider.dispose();
    if (numericRealValueItemProvider != null) numericRealValueItemProvider.dispose();
    if (realSequenceValueItemProvider != null) realSequenceValueItemProvider.dispose();
    if (specialRealValueItemProvider != null) specialRealValueItemProvider.dispose();
    if (bitStringTypeItemProvider != null) bitStringTypeItemProvider.dispose();
    if (namedBitItemProvider != null) namedBitItemProvider.dispose();
    if (bitStringValueItemProvider != null) bitStringValueItemProvider.dispose();
    if (octetStringTypeItemProvider != null) octetStringTypeItemProvider.dispose();
    if (octetStringValueItemProvider != null) octetStringValueItemProvider.dispose();
    if (nullTypeItemProvider != null) nullTypeItemProvider.dispose();
    if (nullValueItemProvider != null) nullValueItemProvider.dispose();
    if (sequenceTypeItemProvider != null) sequenceTypeItemProvider.dispose();
    if (extensionAndExceptionItemProvider != null) extensionAndExceptionItemProvider.dispose();
    if (extensionAdditionsItemProvider != null) extensionAdditionsItemProvider.dispose();
    if (componentTypeListItemProvider != null) componentTypeListItemProvider.dispose();
    if (versionNumberItemProvider != null) versionNumberItemProvider.dispose();
    if (extensionAdditionItemProvider != null) extensionAdditionItemProvider.dispose();
    if (extensionAdditionGroupItemProvider != null) extensionAdditionGroupItemProvider.dispose();
    if (componentTypeItemProvider != null) componentTypeItemProvider.dispose();
    if (namedComponentTypeItemProvider != null) namedComponentTypeItemProvider.dispose();
    if (componentOfTypeItemProvider != null) componentOfTypeItemProvider.dispose();
    if (anyDefinedNamedTypeItemProvider != null) anyDefinedNamedTypeItemProvider.dispose();
    if (sequenceValueItemProvider != null) sequenceValueItemProvider.dispose();
    if (componentValueListItemProvider != null) componentValueListItemProvider.dispose();
    if (sequenceOfTypeItemProvider != null) sequenceOfTypeItemProvider.dispose();
    if (setTypeItemProvider != null) setTypeItemProvider.dispose();
    if (setOfTypeItemProvider != null) setOfTypeItemProvider.dispose();
    if (choiceTypeItemProvider != null) choiceTypeItemProvider.dispose();
    if (alternativeTypeListItemProvider != null) alternativeTypeListItemProvider.dispose();
    if (extensionAdditionAlternativesGroupItemProvider != null) extensionAdditionAlternativesGroupItemProvider.dispose();
    if (extensionAdditionAlternativeItemProvider != null) extensionAdditionAlternativeItemProvider.dispose();
    if (extensionAdditionAlternativesListItemProvider != null) extensionAdditionAlternativesListItemProvider.dispose();
    if (choiceValueItemProvider != null) choiceValueItemProvider.dispose();
    if (prefixedTypeItemProvider != null) prefixedTypeItemProvider.dispose();
    if (taggedTypeItemProvider != null) taggedTypeItemProvider.dispose();
    if (tagItemProvider != null) tagItemProvider.dispose();
    if (classNumberItemProvider != null) classNumberItemProvider.dispose();
    if (objectIdentifierTypeItemProvider != null) objectIdentifierTypeItemProvider.dispose();
    if (objectIdentifierValueItemProvider != null) objectIdentifierValueItemProvider.dispose();
    if (objIdComponentsItemProvider != null) objIdComponentsItemProvider.dispose();
    if (timeTypeItemProvider != null) timeTypeItemProvider.dispose();
    if (dateTypeItemProvider != null) dateTypeItemProvider.dispose();
    if (timeOfDayTypeItemProvider != null) timeOfDayTypeItemProvider.dispose();
    if (dateTimeTypeItemProvider != null) dateTimeTypeItemProvider.dispose();
    if (durationTypeItemProvider != null) durationTypeItemProvider.dispose();
    if (characterStringTypeItemProvider != null) characterStringTypeItemProvider.dispose();
    if (characterStringValueItemProvider != null) characterStringValueItemProvider.dispose();
    if (restrictedCharacterStringTypeItemProvider != null) restrictedCharacterStringTypeItemProvider.dispose();
    if (bmpStringItemProvider != null) bmpStringItemProvider.dispose();
    if (generalStringItemProvider != null) generalStringItemProvider.dispose();
    if (graphicStringItemProvider != null) graphicStringItemProvider.dispose();
    if (ia5StringItemProvider != null) ia5StringItemProvider.dispose();
    if (iso646StringItemProvider != null) iso646StringItemProvider.dispose();
    if (numericStringItemProvider != null) numericStringItemProvider.dispose();
    if (printableStringItemProvider != null) printableStringItemProvider.dispose();
    if (teletexStringItemProvider != null) teletexStringItemProvider.dispose();
    if (t61StringItemProvider != null) t61StringItemProvider.dispose();
    if (universalStringItemProvider != null) universalStringItemProvider.dispose();
    if (utf8StringItemProvider != null) utf8StringItemProvider.dispose();
    if (videotexStringItemProvider != null) videotexStringItemProvider.dispose();
    if (visibleStringItemProvider != null) visibleStringItemProvider.dispose();
    if (restrictedCharacterStringValueItemProvider != null) restrictedCharacterStringValueItemProvider.dispose();
    if (unrestrictedCharacterStringTypeItemProvider != null) unrestrictedCharacterStringTypeItemProvider.dispose();
    if (usefulTypeItemProvider != null) usefulTypeItemProvider.dispose();
    if (constraintItemProvider != null) constraintItemProvider.dispose();
    if (constraintSpecItemProvider != null) constraintSpecItemProvider.dispose();
    if (subtypeConstraintItemProvider != null) subtypeConstraintItemProvider.dispose();
    if (elementSetSpecsItemProvider != null) elementSetSpecsItemProvider.dispose();
    if (elementSetSpecItemProvider != null) elementSetSpecItemProvider.dispose();
    if (unionsItemProvider != null) unionsItemProvider.dispose();
    if (intersectionsItemProvider != null) intersectionsItemProvider.dispose();
    if (intersectionElementsItemProvider != null) intersectionElementsItemProvider.dispose();
    if (exclusionsItemProvider != null) exclusionsItemProvider.dispose();
    if (elementsItemProvider != null) elementsItemProvider.dispose();
    if (subtypeElementsItemProvider != null) subtypeElementsItemProvider.dispose();
    if (singleValueItemProvider != null) singleValueItemProvider.dispose();
    if (containedSubtypeItemProvider != null) containedSubtypeItemProvider.dispose();
    if (valueRangeItemProvider != null) valueRangeItemProvider.dispose();
    if (lowerEndpointItemProvider != null) lowerEndpointItemProvider.dispose();
    if (upperEndpointItemProvider != null) upperEndpointItemProvider.dispose();
    if (lowerEndValueItemProvider != null) lowerEndValueItemProvider.dispose();
    if (upperEndValueItemProvider != null) upperEndValueItemProvider.dispose();
    if (sizeConstraintItemProvider != null) sizeConstraintItemProvider.dispose();
    if (typeConstraintItemProvider != null) typeConstraintItemProvider.dispose();
    if (permittedAlphabetItemProvider != null) permittedAlphabetItemProvider.dispose();
    if (valueRangeValueItemProvider != null) valueRangeValueItemProvider.dispose();
    if (exceptionSpecItemProvider != null) exceptionSpecItemProvider.dispose();
    if (exceptionIdentificationItemProvider != null) exceptionIdentificationItemProvider.dispose();
    if (cStringItemProvider != null) cStringItemProvider.dispose();
  }

}
